package cn.zqy.demo2.day04.demo02;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Set;

/**
 * java.util.LinkedHashMap<K,V> entends HashMap<K,V>
 *     Map 接口的哈希表和链接列表实现，具有可预知的迭代顺序。
 *     底层原理:
 *         哈希表+链表(记录元素的顺序)
 * */
public class Demo02LinkedHashMap {
    public static void main(String[] args) {

        HashMap<String, String> map1 = new HashMap<>();
        map1.put("a", "A");
        map1.put("d", "D");
        map1.put("e", "E");
        map1.put("b", "B");
        map1.put("a", "Z");
        System.out.println(map1);  // key唯一，且{a=Z, b=B, d=D, e=E},乱序

        LinkedHashMap<String, String> map2 = new LinkedHashMap<>();
        map2.put("a", "A");
        map2.put("d", "D");
        map2.put("e", "E");
        map2.put("b", "B");
        map2.put("a", "Z");
        // key唯一，且 {a=Z, d=D, e=E, b=B} 顺序
        System.out.println( "LinkedHashMap: " + map2);

        Set<String> ss = map2.keySet();
        for (String i: ss) {
            System.out.println(i + "--->" + map2.get(i));
        }
    }
}
